package modelo.controlAereo;

import modelo.Orientacion.AreaRectangular;
import modelo.Orientacion.Posicion;
import modelo.Trayectoria.ListaDeSegmentos;

public interface Movible {

        public abstract boolean chocaConMovible(Movible otroMovible);
        /*PreCondicion: el movible debe estar creado
          PostCondicion: devuelve true si el movible choco con otroMovible, en caso contrario devuelve false*/

	public abstract void mover();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: mueve el movible a la siguiente posicion*/

	public abstract Posicion obtenerPosicion();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: devuelve la posicion en la que se encuentra el movible*/
	
	public abstract AreaRectangular obtenerArea();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: devuelve el area de la aeronave*/
	
        public abstract void chocarConLosLimites();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: cambia la trayectoria del movible*/

        public abstract ListaDeSegmentos devolverTrayectoria();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: devuelve la trayectoria del movible*/

        public abstract boolean sePuedeCambiarLaTrayectoria();
        /*PreCondicion: el movible debe estar creado
          PostCondicion: devuelve true si se puede modificar la trayectoria del movible,
          en caso contrario devuelve false*/

}
